package com.itheima.copydemo1;

import java.io.*;

public class Test2 {

    public static void main(String[] args) {

        //使用字节流完成文件复制操作（任何文件的底层都是字节）
        //源文件：D:\\a.txt
        //目标文件：D:\\a_new.txt（复制过去时一定要带文件名）

        copyFile("D:\\b.txt", "D:\\b_new.txt");

        //finally代码区的特点：无论try块中的代码是否出现异常，finally中的代码都会执行，除非JVM终止
        //一般用于程序执行后进行资源释放，比如数据库连接，文件流，网络连接等（代码臃肿，基本不用）

    }

    public static void copyFile(String srcPath, String destPath) {

        InputStream fis = null;
        OutputStream fos = null;

        try {
            //1.创建一个文件字节输入流管道与源文件接通
            fis = new FileInputStream(srcPath);
            //2.创建一个文件字节输出流管道与目标文件接通
            fos = new FileOutputStream(destPath);

            //3.将输入流中的字节，按照一定的规律，写入到输出流中
            byte[] buffer = new byte[1024];
            int len;
            while ((len = fis.read(buffer)) != -1) {
                fos.write(buffer, 0, len);      //读取多少字节，就写入多少字节
            }
            System.out.println("复制成功！");

        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            //4.关闭资源
            try {
                if (fos != null) fos.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
            try {
                if (fis != null) fis.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

    }

}
